export function validatorPass(rule, value, callback) {
  //是否包含数字
  var ptr_digit = /^.*[0-9]+.*$/;
  //是否包含小写字母
  var ptr_lowcase = /^.*[a-zA-Z]+.*$/;
  //是否包含大写字母
  var ptr_upcase = /^.*[A-Z]+.*$/;
  //是否包含特殊字符（非数字、字母的字符）
  var ptr_special = /((?=[\x21-\x7e]+)[^A-Za-z0-9])/;
  if (!value) {
    return callback(new Error("请输入密码"));
  }
  setTimeout(() => {
    if (value.length < 8 || value.length > 20) {
      callback(new Error("密码至少8-20个字符"));
    } else if (ptr_digit.test(value) && ptr_lowcase.test(value)) {
      callback();
    } else {
      callback(new Error("至少8-20个字符，至少一个字母和一个数字"));
    }
  }, 100);
}

export var checkPhone = (rule, value, callback) => {
  const phoneReg = /^1[3|4|5|7|8|9][0-9]{9}$/;
  if (!value) {
    return callback(new Error("请输入手机号"));
  }
  setTimeout(() => {
    // Number.isInteger是es6验证数字是否为整数的方法,但是我实际用的时候输入的数字总是识别成字符串
    // 所以我就在前面加了一个+实现隐式转换
    if (!Number.isInteger(+value)) {
      callback(new Error("请输入数字值"));
    } else {
      if (phoneReg.test(value)) {
        callback();
      } else {
        callback(new Error("手机号码格式/长度不正确"));
      }
    }
  }, 100);
};

export function checkEmail(rule, value, callback) {
  const reg = /^([a-zA-Z]|[0-9])(\w|-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
  if (!value) {
    return callback(new Error("请输入邮箱"));
  }
  setTimeout(() => {
    if (reg.test(value)) {
      callback();
    } else {
      callback(new Error("邮箱格式不正确"));
    }
  }, 100);
}
export default {
  validatorPass,
  checkPhone,
  checkEmail,
};
